Q7. 次のファイルはあるメッセージが暗号化されたものです。ASCIIコードの文字一つ一つを5乗して437で割った余りを10進数で記述しています。各十進数を何乗かして437で割った余りをASCIIコードとして解釈するとメッセージが読めますが、解読しようとしています
次のファイルはあるメッセージが暗号化されたものです。ASCIIコードの文字一つ一つを5乗して437で割った余りを10進数で記述しています。各十進数を何乗かして437で割った余りをASCIIコードとして解釈するとメッセージが読めますが、解読しようとしています
code:bash
$ cat message
262 325 122 80 266 406 163 89 325 89 326
小問1
まず、各数字を200乗して437で割った余りを出力してください。正解はこうなります。
35 308 26 282 399 87 349 55 308 55 85
code:first.sh
opy '[x ** 200 % 437 for x in F1:]' message 35 308 26 282 399 87 349 55 308 55 85
小問2
指数乗する数を変えて力づくで暗号を解いてください。
code:second.sh
for i in {1..200}; do opy -v i=$i '[x ** i % 437 for x in F1:]' message | awk '{for (i=1; i<=NF; i++) {if (127<$i) exit(0)} print}' | opy '["".join([chr(x) for x in F1:])]'; done | grep unko たぶんうんこかunkoが入ってるんだろうなぁと思ったら入っていたいみたい
ただforでループしてみたら特に実感したが、やはり内部でeval的なものを使用している影響か、かなり処理速度が遅い
小問3
もっと合理的に解いてください。
127以上を除外する、というのが合理的解法なのかな、たぶん